تماشای برخط [لینک مستقیم] فیلم آموزشی «اشکال زدایی برنامه» ( لینک دانلود در ادامه مطلب )
زیر نویس انگلیسی [English Subtitle] ( لینک دانلود در ادامه مطلب )
دریافت نسخهی pdf این آموزش [1.89 مگابایت] ( لینک دانلود در ادامه مطلب )
تابحال تو دو تا از پست ها بهتون نشون داده شده که چجوری از DDMS برای مشاهده واقعی گزارشات ثبت شده (log) مربوط به برنامه که ناشی از دستگاهتون یا شبیهسازتونه، استفاده کنید. این کار بهتون کمک میکنه که بتونید خطاهای برنامهتونو رفع کنید یا فقط ببینید چه اتفاقی داره در حال اجرا مییفته.
در این مطلب میخوایم یه مقدار بیشتر به روشهای خطایابی های قدیمی بپردازیم.
1. اول یه پروژه جدید ایجاد کنید.
2. میریم سراغ فولدر res بعد layout ، فایل activity_main.xml رو باز میکنیم، از قسمت pallette یه TextViewو Button و EditText میکشیم میاریم رو صفحه. البته TextView معمولا به صورت پیش فرض هست(همون HelloWord).
و برنامه رو ذخیره میکنیم.
3. حالا اگر بخوایم برنامه مونو اشکال زدایی کنیم، باید یه چیزی به manifest اضافه کنیم که اجازه این کارو بهمون بده.
پس فایل Androidmanifest.xml رو باز میکنیم و رو زبانه Application کلیک میکنیم.
میتونیم مشخصهی debuggable رو همون بالا ببینیم. اگر بخوایم برنامهمونو به اشکال زدای ایکلیپس متصل کنیم، باید این مشخصه رو فعال(true) کنیم.
۴. میخوایم تو فایل جاوای برنامه مون اعلام کنیم که در صورت فشردن دکمه چیکار کنه. پس با این کد یه نمونه از دکمه میسازیم و به دکمهای که قبلا رو صفحه گذاشته بودیم متصل میکنیم.
Button dokme =(Button)findViewById(R.id.button1);
و بعد تابعی که قراره موقع کلیک دکمه صدا زده بشه رو میسازیم.
dokme.setOnClickListener(newOnClickListener(){@Overridepublicvoid onClick(View v){// TODO Auto-generated method stub }});
۵. روی DDMS کلیک کنید و LogCat رو ببینید. البته بدون رفتن تو DDMS هم میتونید LogCat رو ببینید، از منوی که پایین ایکلیپس قرار داره میتونید پیداش کنید. LogCat در واقع هر چیزی رو که تو دستگاه اندروید در حال وقوعه، گزارش میکنه. پس به ازای هر ضربه ای که به صفحه ی دستگاهتون میزنید، اگر کار خاصی انجام بدید، شروع میکنه به ساختن اطلاعات گزارشی. ولی ما میتونیم اطلاعاتی رو که خودمون درباره برنامهمون میخوایم هم اونجا قرار بدیم.
۶. پس به فایل جاوا برمیگردیم. اینجا از کلاس Log که تو بسته ی android.util هست، استفاده میکنیم.
تو این کلاس چندتا تابع وجود داره که میتونیم ازشون برای تهیه گزارش از هرچیزی تو LogCat استفاده کنیم. مثلا تابع d یه پیغام اشکال زدایی ارسال میکنه و ورودیهاش یه برچسب(tag) و یه پیغام(msg) هست. البته اگر بخوایم یه استثنایی رو هم گزارش کنیم، میتونیم یه شیء throwable رو به عنوان ورودی بهش بدیم.
همچنین تابع e رو داریم که برای گزارش استثناء بکار میره، تابع i یه پیغام اطلاعاتی و تابع v پیغام طولانی رو گزارش میکنه. w هم برای اخطاره. و اما جالب ترین چیزی که اینجا وجود داره، wtf هستش که مخفف اینه: What a Terrible Failure یعنی چه خرابی وحشتناکی و بیانگر چیزیه که انتظار نداشتیم تو سیستم اتفاق بیفته.
حالا ما میخوایم از تابع d استفاده کنیم. تو قسمت tag هر چیزی میتونه باشه، فقط باید یه جوری باشه که بتونیم از بین گزارشای دیگه توی LogCat تشخیصش بدیم. من اینجا با حروف بزرگ، سه بار مینویسم A. به عنوان پیغام هم اعلام میکنم که دکمه کلیک شده.
publicvoid onClick(View v){// TODO Auto-generated method stubLog.d("AAA","dokme feshorde shode");}
7. کاری که من میخوام انجام بدم اینه که یه نقطه توقف (break point) به قطعه کد بالا اضافه کنم، بطوریکه اجرای برنامه رو تو اون نقطه متوقف کنه و به ما اجازه اشکال زدایی (debug) بده. به ستونی که سمت چپ کدتون هست توجه کنید. روی اون ستون، دقیقا روبروی خط سوم، دوبار کلیک کنید تا یه break point ایجاد بشه. مطمئنا هر کدوم از شما که قبلا کدش رو دیباگ کرده، این کارو انجام داده.
و بعد اون علامت دیباگ بالای صفحه رو میزنیم.
و گزینه اول، یعنی Android Application رو انتخاب میکنیم.
۸. تو شبیهساز اول یه پیغام نشون میده مبنی بر اینکه منتظر اشکال زدا (Debugger) بوده.
در واقع منتظر اشکال زدای ایکلیپس بوده که به برنامهمون متصل شه. یه کمی صبر کنید متصل میشه.
وقتی رو دکمه ای که ساختیم کلیک کنیم، میبینیم که خودش ما رو میبره به قسمت debug توی ایکلیپس.
البته بسته به اینکه قبلا رو ایکلیپس چه کارایی انجام دادید، ممکنه یه پیغام نشون بده و ازتون بپرسه که آیا میخواید به قسمت اشکال زدا (debug) برید یا نه؟ که فقط کافیه بله رو بزنید.
۹. اگه یه نگاهی به logcat بندازید، متوجه میشید که پیغاممون رو گزارش نکرده. به خاطر اینکه برنامه مون رو تو اون نقطه متوقف کرده. پس رو علامت ادامه کلیک میکنیم تا اجرا ادامه پیدا کنه و اینجاست که میبینید پیغاممون گزارش میشه.
ستون Tag تو LogCat در واقع نشون دهندهی اینه که کدوم فرایند، یا کدوم برنامه این پیغام رو ارسال کرده.
۱۰. یه چیز دیگه که باید درمورد LogCat بهش توجه کنیم، اینه که مقدار عظیمی از اطلاعات رو، درمورد هر اتفاقی که تو دستگاه میافته، گزارش میکنه. ولی اگه بخوایم که فقط اطلاعات مربوط برنامه مون گزارش بشه چی؟
کاری که باید انجام بدیم اینه که یه فیلتر تنظیم کنیم. پس روی علامت که اون بالاست، کلیک میکنیم. و من اسم فیلترمو میذارم A و بهش میگم اون گزارش هایی رو نشون بده که با برچسب AAA علامت گذاری شدن.
و بعد مشاهده میکنید
.....................................................
موضوعات مرتبط: اشکال زدایی (debug) برنامه ، ،
برچسبها:
صفحه قبل 1 صفحه بعد
سبکهای نمایش (styles)
فهرستهای سفارشی (Customized Lists)
فهرستها (Lists)
دکمهها
صفحهبندی (layout)
واحدهای اندازهگیری
اشکال زدایی (debug) برنامه
درک امنیت و اجازه ها (permission)
ساختن و استفاده از منابع (Resources)
استفاده از مفاهیم ضمنی (implicit intents)
استفاده از مفاهیم آشکار (explicit intents)
ساختن و مدیریت فعالیت ها Activities یک برگرفته شده از AndroidCode.ir
کار کردن با AndroidManifest.xml
ایجاد پروژه و درک ساختار آن
نمای کلی از توسعه اندروید
آماده کردن دستگاه اندروید (گوشی) برای توسعه
مراحل نصب «ابزار توسعه اندروید» ADT در ایکلیپس
مراحل نصب ایکلیپس (Eclipse) روی ویندوز
مراحل نصب ایکلیپس (Eclipse) روی مک